草庐IT

c++ - STL BigInt 类实现

全部标签

c - x86-64下的快速堆栈切换

在x86-64下切换堆栈的最少代码是多少?我正在尝试在没有getcontext或setjmp+内联汇编的情况下在Windows和Linux下实现纤程。它真的像交换$rsp和$rbp一样简单吗?因为我可以轻松做到。我只是不知道该怎么做。我对我的x86-64知识生疏了。 最佳答案 将RSP更改为指向不同的堆栈必须作为上下文切换的一部分来完成,上下文切换会保存旧线程/纤程中的所有寄存器并从新寄存器加载已保存的架构状态。不仅是RBP,还有所有RAX-RDI和R8-R15,以及RIP(通过jmp或ret)。我认为还有所有其他调用保留的架构状态

c++ - ms-extensions 标志对 gcc 有什么作用?

GCC有一个标志-fms-extensions。这个标志到底是做什么的?为什么它有时默认打开,它为什么存在? 最佳答案 根据gcc9.1.0源代码(greppedforflag_ms_extensions),效果是:(C)​​允许Microsoft版本的匿名union和结构。这包括对C11anonymousunionsandstructs的支持以及Microsoft-specificflavours,包括完全省略大括号成员列表,以及将成员放置在父namespace中,即使结构/union具有标识符也是如此。(C++)允许类成员与其类

c - Windows中c的 sleep 功能。是否存在精度更高的函数?

我想知道是否有人知道可以在c的窗口中使用的更好的sleep函数,而不是Sleep(),它需要毫秒输入并且只保证输入是经过的最小时间量。我在1毫秒内传递,但实际上有15-16毫秒的延迟。有什么办法可以准确设置指定的休眠时间吗? 最佳答案 不,不是真的。当您告诉您的程序休眠时,您将放弃处理器并让操作系统决定下一步做什么。一旦操作系统处于控制之下,它就会决定何时给您的程序另一片处理时间。这就是为什么您可以指定最小值,但不能保证操作系统会在任何特定时间返回到您的进程。 关于c-Windows中c

创建隐藏进程(窗口不可见)

我使用CreateProcess()并将启动标志设置为STARTF_USESHOWWINDOW和SW_HIDE以在后台启动应用程序并隐藏其窗口。我这样做是为了运行计划的维护任务,我不想被Windows打扰。在大多数情况下,窗口是隐藏的,但在某些情况下,程序的窗口会在您面前突然弹出(例如Google的Chrome-我开始使用不同的应用程序进行测试,看看这是否曾经是一个问题,但不是...).这种情况在WindowsXP中发生的次数较少,但在Vista中发生的次数很多。是否有我缺少的标志?有没有其他方法可以创建隐藏窗口的进程?谢谢!我的示例代码是:char*ProgramNameSTARTU

c - Windows 上带有 DLL 的动态模块

我正在用C编写一个应用程序,它可以在运行时通过模块/共享对象/DLL进行扩展。这些模块可能会使用现有程序的API,但也可能会提供新功能供以后加载的模块使用,因此模块之间存在相互依赖的可能性。我目前在Linux下的做法是让每个模块都定义一个depends()函数,该函数返回它所依赖的其他模块名称的列表。这样,我就可以自行编译和链接每个模块,使用dlopen()和RTLD_LAZY加载模块,首先解决其依赖关系,然后使用RTLD_GLOBAL完全加载它。这工作得很好并且完全符合我的要求。它还允许我用不同版本替换一个模块,而无需重新编译依赖它的所有其他模块。将其移植到Windows时会出现实际

.net - 如何使用c++或vb.net在windows中获取当前打开的应用程序?

我需要当前打开的应用程序(那些出现在任务栏中的应用程序)而不是当前正在运行的进程。谢谢 最佳答案 您需要枚举所有顶级窗口(使用EnumWindows函数);你必须跳过:不可见窗口(查看IsWindowVisible函数的返回值或直接查看窗口是否为WS_VISIBLE风格);具有扩展样式WS_EX_TOOLWINDOW的窗口,除非它们也具有WS_EX_APPWINDOW扩展样式。所有其他的应该是任务栏中显示的那些(here是完整的故事)。然后,如果你想获得拥有每个窗口的进程/线程,你可以使用GetWindowThreadProcess

c - C中的DWORD和HANDLE类型有什么区别?

我在C中有一个返回类型为DWORD的线程,但它随后由HANDLE类型指针处理。这两种类型有什么区别?我专门为ANSIC问这个问题。没错,DWORD是uint类型,HANDLE是PVOID,C允许直接强制转换DWORD到HANDLE。但是这些类型有什么不同吗?或者我可以简单地说它们是一样的吗?这是一个在讨论中被问到的问题。我想知道正确答案是什么。 最佳答案 Win32:DWORD32位无符号长型HANDLEvoid*(32位指针)Win64DWORD32位无符号长型HANDLEvoid*(64位指针)不要只是假设你可以将一个转换为另一

c++ - 你能推荐一个有趣的适合新手的驱动程序吗?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6个月前。Improvethisquestion我是驱动程序开发的新手,开始寻找有趣的驱动程序相关任务。

c - 是否有在 Windows 上的 C 中使用 winhttp 的完整示例?

我可以在C++中找到大量示例,但没有任何东西是用C编写的。我正在尝试连接到http服务器,下载返回的数据,然后将其保存到文件中。在Windows上有更好的方法吗?我不应该使用WinHttp或WinInet吗?互联网上似乎极度缺乏C的Windows文档。感谢您的帮助。 最佳答案 http://www.codeguru.com/cpp/i-n/internet/http/article.php/c6237这看起来也不错,在C中http://msdn.microsoft.com/en-us/library/aa384270(v=VS.85

c++ - 有没有办法中止 SQLite 调用?

我在Windows应用程序中使用SQLite3。我有源代码(所谓的SQLite合并)。有时我必须执行繁重的查询。也就是说,我在准备好的语句上调用了sqlite3_step,它需要很长时间才能完成(由于I/O负载很重)。我想知道是否有可能中止这样的调用。如果能够在同一线程调用的中间进行一些后台处理,我也会很高兴(因为大部分时间都花在等待I/O完成上).我想过自己修改SQLite代码。在最简单的情况下,我可以在每次调用ReadFile/WriteFile之前检查一些条件(例如中止事件句柄),并适本地返回错误代码。并且为了允许后台处理,文件应该以重叠模式打开(这会启用异步ReadFile/W